<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml"> 
    <f:metadata>
        <f:event type="preRenderView" 
                 listener="#{departamentoBean.validarAcceso}"/>
    </f:metadata>
    <ui:define name="cabecera">
        <title>Gestión de Departamentos</title>
        <link rel="shortcut icon"  
              href="/resources/imagenes/favicon.ico" />
    </ui:define>
    <!-- Tabla Departamento -->
    <ui:define name="contenido">
        <center>
            <p:panel id="departamentoPnl" 
                     header="Listado de Departamentos" 
                     styleClass="contenido">
                <h:form id="tablaDepartamentoFrm">
                    <p:dataTable id="tablaDepartamentoDtb" 
                                 var="departamento" 
                                 resizableColumns="true"
                                 value="#{departamentoBean.listaEntidades}"
                                 rowKey="#{departamento.codigodepartamento}" 
                                 selectionMode="single"
                                 paginator="true" 
                                 paginatorPosition="bottom" 
                                 rows="10"
                                 emptyMessage="No hay registros disponibles.">
                        <p:column headerText="Departamento" 
                                  filterBy="#{departamento.nombre}" 
                                  sortBy="#{departamento.nombre}" 
                                  filterMatchMode="contains"
                                  styleClass="columna">
                            <h:outputText value="#{departamento.nombre}" />
                        </p:column>
                        <p:column headerText="Región" 
                                  filterBy="#{departamento.region}" 
                                  sortBy="#{departamento.region}"
                                  filterMatchMode="contains"
                                  styleClass="columna">
                            <h:outputText value="#{departamento.region}"/>
                        </p:column>
                        <p:column headerText="Modificar"
                                  style="font-size: 110%"
                                  rendered="#{sesionBean.verificarPermiso('modificar','departamento')}">
                            <center>
                            <p:commandButton id="modificarBtn" 
                                             title="Modificar" 
                                             icon="ui-icon-pencil"
                                             actionListener="#{departamentoBean.prepararModificacion(departamento)}" 
                                             update=":guardarDepartamentoFrm:guardarDepartamentoPnl" 
                                             oncomplete="guardarDepartamentoWgt.show()">
                                    <f:setPropertyActionListener target="#{departamentoBean.operacionActual}"
                                                                           value="ACTUALIZACION" />
                            </p:commandButton>
                            </center>                   
                        </p:column>
                        <p:column headerText="Eliminar"
                                  style="font-size: 110%"
                                  rendered="#{sesionBean.verificarPermiso('eliminar','departamento')}">
                             <center>
                                 <p:commandButton 
                                    id="eliminarBtn"
                                    title="Eliminar" 
                                    actionListener="#{departamentoBean.prepararEliminacion(departamento)}"
                                    icon="ui-icon-trash"
                                    update="@form" 
                                    oncomplete="confirmacionWgt.show()">
                                     <f:setPropertyActionListener 
                                         target="#{departamentoBean.operacionActual}" 
                                         value="ELIMINACION" />
                                 </p:commandButton>
                             </center>
                        </p:column>
                        <f:facet name="footer">
                                <p:commandButton id="agregarBtn" 
                                     value="Nuevo Departamento" 
                                     actionListener="#{departamentoBean.prepararAdicion}" 
                                     update=":guardarDepartamentoFrm:guardarDepartamentoPnl" 
                                     oncomplete="guardarDepartamentoWgt.show()"
                                     title="Agregar nuevo departamento" 
                                     icon="ui-icon-document"
                                     style="float:left; font-size: 110%"
                                     rendered="#{sesionBean.verificarPermiso('agregar','departamento')}">
                                   <f:setPropertyActionListener 
                                       target="#{departamentoBean.operacionActual}" 
                                       value="INSERCION" />
                                </p:commandButton>              
                        </f:facet>
                    </p:dataTable>
                </h:form>
            </p:panel>
        </center>
    </ui:define>      
    <ui:define name="extra">
        <!-- Diálogo de Agregar/Modificar Departamento-->
        <p:dialog id="guardarDepartamentoDlg" 
                  header="Datos del Departamento" 
                  widgetVar="guardarDepartamentoWgt" 
                  resizable="false" 
                  modal="true" 
                  closable="false"
                  draggable="false"
                  style="font-size: 85%">
            <h:form id="guardarDepartamentoFrm">
                
                <p:messages id="mensaje" 
                            globalOnly="true" 
                            redisplay="false"
                            autoUpdate="true"/>
                <h:panelGrid id="guardarDepartamentoPnl" 
                             columns="3" 
                             style="margin-bottom:10px; font-size: 85%">
                    <h:outputLabel for="nombredepartamentoTxt" 
                                   value="Nombre del departamento: " />
                    <p:inputText id="nombredepartamentoTxt" 
                                 value="#{departamentoBean.entidad.nombre}">
                                 <f:attribute name="regex" value="#{regex.textoobligatorio}" />
                                 <f:attribute name="formato" value="Solo Caracteres" />
                                 <f:validator validatorId="regexValidator" />
                   </p:inputText>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip for="nombredepartamentoTxt" 
                                    showEvent="focus" 
                                    hideEvent="blur" 
                                    rendered="#{departamentoBean.tieneErrores('guardarDepartamentoFrm:nombredepartamentoTxt')}">
                                    <p:message id="nombredepartamentoMsg" 
                                               for="nombredepartamentoTxt"
                                               display="text" />
                          </p:tooltip>
                   </p:panel>                  
                    <h:outputLabel for="regionSom" 
                                   value="Región geográfica: " />
                    <p:selectOneMenu id="regionSom" 
                                     value="#{departamentoBean.entidad.region}" 
                                     required="true">  
                        <f:selectItem itemLabel="Seleccione... " 
                                      itemValue="" />  
                        <f:selectItem itemLabel="Occidental" 
                                      itemValue="Occidental" />  
                        <f:selectItem itemLabel="Central" 
                                      itemValue="Central" />  
                        <f:selectItem itemLabel="Paracentral" 
                                      itemValue="Paracentral" />
                        <f:selectItem itemLabel="Oriental" 
                                      itemValue="Oriental" />  
                     </p:selectOneMenu>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip for="regionSom" 
                                    showEvent="focus" 
                                    hideEvent="blur" 
                                    rendered="#{departamentoBean.tieneErrores('guardarDepartamentoFrm:regionSom')}">
                                    <p:message id="regionMsg" 
                                               for="regionSom"
                                               display="text" />
                          </p:tooltip>
                   </p:panel>         
                </h:panelGrid>
                <p:separator />
                <br/>
                <p:commandButton 
                    value="Guardar" 
                    id="guardarBtn"
                    update="@form,:tablaDepartamentoFrm:tablaDepartamentoDtb" 
                    oncomplete="if ( !args.validationFailed ) 
                       guardarDepartamentoWgt.hide()" 
                    actionListener="#{departamentoBean.guardarEntidad}" 
                    icon="ui-icon-disk" 
                    title="Guardar"
                    style="float:right; font-size: 85%"/>
                    <p:commandButton 
                        value="Cancelar" 
                        actionListener="#{departamentoBean.revertirCambios}"
                        onclick="guardarDepartamentoWgt.hide()"
                        icon="ui-icon-cancel" 
                        title="Cancelar"
                        immediate="true"
                        style="float:right; font-size: 85%"/>
            </h:form>
        </p:dialog>
        <!-- Diálogo de confirmación de eliminación -->
        <p:confirmDialog 
            id="confirmacionDlg" 
            message="¿Está seguro que desea eliminar el registro?" 
            header="Confirmación" 
            widgetVar="confirmacionWgt" 
            severity="alert"
            width="300"
            style="font-size: 85%">    
            <h:form>
            <p:messages 
             id="mensajesMsg" 
             globalOnly="true" />
                    <p:commandButton 
                        value="Eliminar"
                        actionListener="#{departamentoBean.eliminarEntidad}"
                        icon="ui-icon-trash" 
                        style="float:right; font-size: 85%"
                        update="@form,:tablaDepartamentoFrm:tablaDepartamentoDtb"
                        oncomplete="if ( !args.validationFailed ) confirmacionWgt.hide()"/>
                    <p:commandButton 
                        value="Cancelar"
                        update="@form"
                        oncomplete="confirmacionWgt.hide()" 
                        icon="ui-icon-cancel" 
                        style="float:right; font-size: 85%">
                        <f:setPropertyActionListener 
                            target="#{departamentoBean.operacionActual}" 
                            value="NINGUNA" />
                    </p:commandButton>
            </h:form>
        </p:confirmDialog>     
    </ui:define>   
</ui:composition>

